<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>vue学习使用</title>
  <!-- 第1步： 引入vue库文件 -->
  <script src="./js/vue.js"></script>
  <style>
    .active {
      color: red;
    }

    .font30 {
      font-size: 30px;
    }
  </style>
</head>

<body>
  <!-- 第2步：挂载点 -->
  <div id="app">
    <!-- 
      class样式的动态添加，对象和数组方式
      对象: {key它就是样式名称:布尔值【true生效，false不生效】} -- 一般用于开关显示的样式,不太适合添加新的属性样式
     -->
    <!-- <div :class="titleClass">我是一个标题</div> -->
    <!-- 
      数组:[元素样式名称]
      一般对于追加新样式，使用数组
     -->
    <div :class="titleStyle">我是一个标题</div>

    <button @click="addStyle">添加样式</button>
  </div>

  <!-- 第3步：实例化vue -->
  <script>
    const vm = new Vue({
      el: '#app',
      data: {
        titleClass: { active: false },
        titleStyle: []
      },
      methods: {
        addClass() {
          // this.titleClass.active = !this.titleClass.active
          // this.titleClass.active = true
          // this.titleClass.font30 = true
          // console.log(this.$data);
          // this.titleClass = { ...this.titleClass, font30: true }
          // let titleClass = JSON.parse(JSON.stringify(this.titleClass))
          // titleClass.font30 = true
          // this.titleClass = titleClass
          // this.titleClass = Object.assign({}, this.titleClass, { font30: true })
          // 动态给对象添加成员属性
          // this.$set(this.titleClass, 'font30', true)
          // let obj =  Object.assign(参数1地址和返回值地址是同一个地址)
        },
        addStyle() {
          // 给数组添加元素，元素就是样式名称，这样它会就追加样式
          // push unshift shift pop splice sort reverse 调用时都会让视图更新
          this.titleStyle.push('active')
          this.titleStyle.push('font30')
        }
      }
    })
  </script>

</body>

</html>